import router from './router'
import store from './store'
import NProgress from 'nprogress' // progress bar
import 'nprogress/nprogress.css' // progress bar style
import nProgress from 'nprogress'

const whiteList = ['/login', '/404'] // no redirect whitelist

router.beforeEach(async(to, from, next) => {
  nProgress.start()
  if (store.getters.token) {
    // 存在token 看是否去往登录页
    if (to.path === '/login') {
      // 直接去主页
      next('/')
    } else {
      // 看是否已经获取了用户资料， 此时已经保证有token了，我们就可以正常获取用户资料了
      // 不能直接映射对象，
      if (store.getters.userId) {
        // 有 正常放行
        next()
      } else {
        try {
          // 没有， 那么就可以通过vuex获取和保存userInfo
          await store.dispatch('user/getUserInfo')
        } catch (error) {
          console.log(error)
        }
        next()
      }
    }
  } else {
    // 不存在token, 看路径是否是在白名单
    if (whiteList.indexOf(to.path) !== -1) {
      // 在白名单 正常放行
      next()
    } else {
      // 进入登录页
      next('/login')
    }
  }
  nProgress.done()
})

router.afterEach(() => {
  // finish progress bar
  NProgress.done()
})
